home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / pctjoc85.arc / SIEVE.F77 < prev    next >
Text File  |  1985-03-23  |  1KB  |  45 lines

  1. *     prime number sieve program
  2.  
  3.       integer*2   i, niter, count, prime
  4.       integer*2   t1 (4), t2 (4)
  5.  
  6.       write  (*, '  ('' no. iterations: '' )   ')
  7.       read   (*, *) niter
  8.  
  9.       call time (t1)
  10.       do 30 i = 1, niter
  11.          call sieve (count, prime)
  12. 30       continue
  13.  
  14.       call etime (t2, t1, niter)
  15.       write  (*, 40) count, prime
  16. 40    format ('0 done', I6, ' primes, largest is ', I6)
  17.       end
  18.  
  19.       subroutine sieve (count, largest)
  20.       integer*2         count, largest
  21.  
  22.       integer     size
  23.       parameter   (size = 8191)
  24.  
  25.       integer*2   i, prime, k
  26.       logical     flags (size)
  27.  
  28.       count = 0
  29.       do 10 i = 1, size
  30.          flags (i) = .true.
  31. 10       continue
  32.  
  33.       do 30 i = 1, size
  34.          if (flags (i)) then
  35.             prime = i + i + 1
  36.             do 20 k = i + prime, size, prime
  37.                flags (k) = .false.
  38. 20             continue
  39.             count = count + 1
  40.             end if
  41. 30       continue
  42.       largest = prime
  43.       return
  44.       end
  45.